平成17年 秋期 基本情報技術者 午後 問08
問08 Java次の Java プログラムの説明及びプログラムを読んで,設問に答えよ。 〔プログラムの説明〕 英文のテキストを処理し,単語の出現回数を数えるプログラムの一部である。 テキストは,単語,空白,コンマ及びピリオドで構成され,単語はアルファベットだけで構成される。 単語中の大文字はすべて小文字に変換して取り扱う。 さらに,単語の出現回数だけでなく,アルファベットの各文字が単語の先頭に現れた回数を 数えられるようにする。 (1) WordTable は,与えられた文字列から単語を切り出し,出現回数を数えるクラスである。 実際に単語を数える処理は,コンストラクタで指定する別のオブジェクトで行う。 (2) Counter は,単語を数える処理のインタフェースである。 (3) WordCounter は,単語の出現回数を数えるクラスである。 (4) FirstLetterCounter は,アルファベットの各文字が単語の先頭に現れた回数を 数えるクラスである。 (5) Test は,テスト用のメインプログラムである。実行例を図に示す。
図 クラス Test の実行例 public boolean hasMoreTokens()
java.util.HashMap は,そのインタフェースを実装したクラスである。 キーを指定して,そのキーに値を関連付けたり,そのキーに関連付けられた値を 取り出したりすることができる。 次のメソッドをもつ。 public Object get(Object key)
public boolean hasNext()
〔プログラム1〕 import java.util.StringTokenizer; public class WordTable { private counter; public WordTable( counter) { this.counter = counter; } public void put(String line) { StringTokenizer st = new StringTokenizer(line, " ,."); while (st.hasMoreTokens()) counter.put(st.nextToken().toLowerCase()); } public String toString() { return counter.toString(); } } 〔プログラム 2〕 public interface Counter { void put(String str); } 〔プログラム 3〕 import java.util.Map; import java.util.HashMap; import java.util.Iterator; public class WordCounter { private Map freq = new HashMap(); public void put(String str) { int count = ; if (freq.containsKey(str)) count += ((Integer) freq.get(str)).intValue(); freq.put(str, new Integer(count)); } public String toString() { StringBuffer buf = new StringBuffer(); for (Iterator it = freq.keySet().iterator(); it.hasNext(); ) { String word = (String) it.next(); buf.append(word + "(" + freq.get(word) + ")\n"); } return buf.toString(); } } 〔プログラム 4〕 public class FirstLetterCounter { private int[] flFreq = new int[26]; public void put(String str) { ++; } public String toString() { StringBuffer buf = new StringBuffer(); for (int i = 0; i < flFreq.length; i++) { if (flFreq[i] != 0) buf.append((char) ('a' + i) + "(" + flFreq[i] + ")\n"); } return buf.toString(); } } 〔プログラム 5〕 public class Test { public static void main(String[] args) { String text = "Hello java world. Java is wonderful."; WordTable wordCountTable = new WordTable(new WordCounter()); WordTable firstLetterCountTable = new WordTable(new FirstLetterCounter()); wordCountTable.put(text); firstLetterCountTable.put(text); System.out.println("wordCountTable:\n" + wordCountTable); System.out.println("firstLetterCountTable:\n" + firstLetterCountTable); } } 設問 プログラム中の に入れる正しい答えを, 解答群の中から選べ。
a に関する解答群 ア Counter イ FirstLetterCounter ウ Object エ WordCounter オ WordTable b に関する解答群 ア extends Counter イ extends Object ウ extends WordTable エ implements Counter オ implements Object カ implements WordTable c に関する解答群 ア -1 イ 0 ウ 1 エ ((Integer) freq.get(str)).intValue() オ str.length() d に関する解答群 ア flFreq['a' + str.charAt(0)] イ flFreq['a' + str.charAt(1)] ウ flFreq[str.charAt(0)] エ flFreq[str.charAt(1)] オ flFreq[str.charAt(0) - 'a'] カ flFreq[str.charAt(1) - 'a']
[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]
©2004-2024 情報処理試験.jp
|
プライバシーポリシー・著作権・リンク
|
お問合わせ
| |